import React from 'react';
import moment from 'moment';

/**
 *
 * @param {number} data 分数
 * @description 任务平均质量标签信息
 */
export const getQualityTag = data => {
    if (data === 5) {
        return { label: '未评估', color: '#ccc' };
    }
    if (data === 4) return { label: '优', color: '#5ad8a6' };
    if (data === 3) return { label: '良', color: '#ffa808' };
    if (data === 2) return { label: '中', color: '#ffa808' };
    if (data === 1) return { label: '差', color: '#f5222d' };
    return { label: '未评估', color: '#ccc' };
};

/**
 *
 * @param {number} min 小时数
 * @description 小时小数点转换
 */
export const getHour = min => {
    if (!min) {
        return 0;
    }
    if (min % 60 === 0) {
        return min / 60;
    }
    return (min / 60).toFixed(2);
};

/**
 *
 * @param {string} data 要换行的字符串
 * @param {string} tag 指定标记
 * @description 根据指定字符串换行
 */
export const getStringBr = (data, tag = ';') => {
    if (!data) {
        return false;
    }
    const arr = data.split(tag);
    return arr.map(item => (
        <div key={item}>
            {item}
            <br />
        </div>
    ));
};

/**
 *
 * @param {number} totalTaskNum 任务总数
 * @param {number} overdueDoneTaskNum 逾期达成任务数
 * @param {number} overdueNonexecutionTaskNum 逾期未达成任务数
 * @description 任务逾期格式化
 */
export const formatTaskOverdue = (totalTaskNum, overdueDoneTaskNum = 0, overdueNonexecutionTaskNum = 0) => {
    if (!totalTaskNum) {
        return '';
    }
    const count = overdueDoneTaskNum + overdueNonexecutionTaskNum;
    return (
        <>
            {totalTaskNum}
            {count === 0 ? (
                <span style={{ color: '#555' }}>（无逾期）</span>
            ) : (
                <span style={{ color: '#A30014' }}>（逾期{count}）</span>
            )}
        </>
    );
};

/**
 *
 * @param {string} status 版本flag状态码
 * @description 按传入的flag值返回文本，0:上线; 1:研发中; 2:测试中
 */
export const toVersionReleaseFlag = num => {
    switch (num) {
        case '0':
            return '上线';
        case '1':
            return '研发中';
        case '2':
            return '测试中';
        default:
            return '';
    }
};

// 转换百分比
export const toPercent = (num, total) => {
    if (total === 0) {
        return '0%';
    }
    return `${((num / total) * 100).toFixed(1)}%`;
};

// 表格tip格式化
export const formatTip = (type, num, percentage, unit = '个') => `${type}：${num}${unit}，${percentage}`;

/**
 * 根据 区间日期选择器类型 转换服务端所需日期格式
 *
 * @param {*} type 日期选择器类型映射 1：周 2：月
 * @param {*} date 某天，如 2020-03-20
 * @returns {startDate,endDate} 开始时间和结束时间
 */
export const formatDate = (type, date) => {
    const TYPE_MAP = { 1: 'week', 2: 'month' };
    return {
        startDate: moment(date)
            .startOf(TYPE_MAP[type])
            .format('YYYY-MM-DD'),
        endDate: moment(date)
            .endOf(TYPE_MAP[type])
            .format('YYYY-MM-DD')
    };
};

/**
 *
 * @param {Object} obj 要转换的对象
 * @param {Array} deletepro 排除指定的参数
 * @description object转换成url参数
 */
export const objectToQueryString = (obj = {}, deletepro = []) =>
    Object.keys(obj)
        .map(key => {
            if (obj[key]) {
                if (deletepro.length > 0 && deletepro.includes(key)) {
                    return '';
                }
                return ''.concat(encodeURIComponent(key), '=').concat(encodeURIComponent(obj[key]));
            }
            return '';
        })
        .filter(e => e)
        .join('&');

// datePicker中时间范围进行限制
export const limitDate = (current, reportType) => {
    if (current) {
        return current < (Number(reportType) === 1 ? moment('2020').add(8, 'w') : moment('2020-02'));
    }
    return true;
};
